//
// Created by postgres on 4/20/17.
//

#ifndef MYDATASTRUCTURES_QUEUE_H
#define MYDATASTRUCTURES_QUEUE_H

#include "../common/common.h"
/* -----SeqQueue----------------------- */
#define SeqQueueSIZE 10
#define REAR(x) (x+1)% SeqQueueSIZE
#define FRONT(x) (x+1)% SeqQueueSIZE
typedef int ElemType;/* ElemType类型根据实际情况而定，这里假设为int */
/* 循环队列的顺序存储结构 */
typedef struct SeqQueue {
    ElemType data[SeqQueueSIZE];
    int front;        /* 头指针 */
    int rear;        /* 尾指针，若队列不空，指向队列尾元素的下一个位置 */
} SeqQueue;

void SeqQueue_test();
/* -----LinkQueue----------------------- */
/* linkQueue with haed */
typedef int QElemType; /* QElemType类型根据实际情况而定，这里假设为int */

typedef struct QNode    /* 结点结构 */
{
    QElemType data;
    struct QNode *next;
} QNode;
typedef QNode *QueuePtr;
typedef struct LinkQueue        /* 队列的链表结构 */
{
    QueuePtr front;
    QueuePtr rear; /* 队头、队尾指针 */
} LinkQueue;

void LinkQueue_test();

#endif //MYDATASTRUCTURES_QUEUE_H
